<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title></title>
  </head>
  <body>
    <script type="text/javascript">
      // 一.三种状态:状态模式；状态机；

      //   let p = new Promise((resolve, reject) => {
      //     resolve("success11");
      //     // reject("error");
      //   });

      //   // 1.pendding：等待状态；  PromiseResult 是 undefined
      //   //   console.log(p); // pendding

      //   // 2.resolved 或者 fufilled  ： 成功状态；PromiseResult：可以通过参数来设置；
      //   // 需要在回调里调用 resolve方法 ，那么就可以得到一个成功状态的promise对象；
      //   // console.log(p);

      //   // 3.rejected:失败状态   PromiseResult：也可以通过 参数设置

      //   console.log(p);
      // 二、每个promise对象 都会有一个then方法；then方法里会有2种回调 1.onResolved（成功的回调函数）  2.onRejected（失败的回调函数）;
      // let p = new Promise((resolve,reject)=>{
      // 	// resolve("success");
      // 	// reject("错误");
      // })
      // // promise对象会有三种状态 ：1.pendding 状态（then里的回调没有执行）  2.fufilled状态 3，rejected状态
      // p.then((res)=>{
      // 	console.log("onResolved",res);
      // },(err)=>{
      // 	console.log("onRejected",err);
      // })

      // 三 、promise里then的三种返还值；
      // let p = new Promise((resolve,reject)=>{
      // 		resolve("success");
      // });

      // 1.then里没有返还值；
      // let thensReturn =  p.then(res=>{

      // })

      // console.log(thensReturn);

      // 2.then里有返还值；会返还一个 promise对象 且结果值是返还的值；
      // let thensReturn =  p.then(res=>{
      // 		return 123;
      // })

      // console.log(thensReturn);

      //  2.then里有返还一个promise对象: 返还的promise对象 会原封不动的返还
      // let thensReturn =  p.then(res=>{
      // 		return new Promise(res=>{
      // 			res("返还的promise对象");
      // 		});
      // })
      // console.log(thensReturn)

      // 总结 ：无论promise里的then如何返还 ，都可以得到一个promise对象

      let p = new Promise((res, rej) => {
        res("success");
      });
      let p2 = p.then((res) => {
        console.log(res); // success;
        return 123;
      });
      let p3 = p2.then((res) => {
        console.log(res); // 123
        return 456;
      });
      // 无限then的链式操作
      p3.then((res) => {
        console.log(res); // 456;
      });
    </script>
  </body>
</html>
